Skip to main content

Struktur Dasar Module di Move-Sui Part I

Kerja bagus! Kamu sudah belajar cara men-setup package Move-Sui dan memahami komponen pentingnya. Sekarang, di pelajaran ini kita akan melihat seperti apa struktur sebuah smart contract di Sui Move. Komponen apa saja yang membentuk sebuah smart contract yang lengkap?

Keyword module

Di Move-Sui, kita mendefinisikan smart contract menggunakan keyword module, mirip seperti kita memakai keyword contract di Solidity. Berikut adalah sintaks lengkap deklarasi sebuah smart contract.

module package_name::module_name {
// kode module berada di sini
}

Mari pahami apa itu package_name dan module_name.

  • package_name adalah nama yang kamu berikan saat membuat package. Misal pada perintah sui move new hello_world, nama packagenya adalah hello_world.
  • module_name adalah nama module yang kamu buat di dalam package. Satu package bisa berisi banyak module, karena itu kita harus menuliskannya secara eksplisit.

Contoh pada proyek “Hello World” kita:

module hello_world::hello_world {
// kode module berada di sini
}

Semua isi kontrak (termasuk import) ditulis di dalam blok module pada Move-Sui; berbeda dengan beberapa bahasa lain yang memisahkan bagian import di luar.

Keyword use

Di Move-Sui, use dipakai untuk mengimpor module lain ke dalam module kita. Struktur umumnya:

use <Address/Alias>::<ModuleName>;

Penjelasan bagian-bagiannya:

  • <Address/Alias> adalah address dari module yang ingin kita gunakan. Untuk menyederhanakan, kita biasanya memakai alias yang didefinisikan di Move.toml (sudah dibahas di pelajaran sebelumnya) daripada menulis address penuh.
  • <ModuleName> adalah nama module-nya. Contoh: jika package sui memiliki module transfer yang ingin kita pakai, maka:
use sui::transfer;

Beberapa module penting di Move-Sui

Berikut module bawaan yang sering dipakai dalam banyak smart contract:

  • use std::string;
    • Memungkinkan kita memakai tipe string.
  • use sui::transfer;
    • Menyediakan fungsi untuk mentransfer sebuah object dari satu alamat akun ke alamat lain.
  • use sui::object;
    • Mengimpor module object dari framework Sui; berguna untuk membuat object.
  • use sui::tx_context;
    • Mengimpor tx_context; membantu mendapatkan informasi dasar transaksi seperti alamat pengirim, penanda epoch, dsb.

Masih banyak module lain untuk kegunaan khusus. Untuk saat ini, yang di atas sudah cukup.

Penutup

Kita sudah membahas dua keyword dasar: module (untuk mendefinisikan module) dan use (untuk mengimpor module lain). Selanjutnya kita akan mempelajari istilah-istilah lain yang membantu membangun sebuah module di Sui Move.